package com.wxp.demo09.apply.receiver;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.VibrationEffect;
import android.os.Vibrator;
import android.os.VibratorManager;

import com.wxp.demo09.util.LogUtils;
import com.wxp.demo09.util.ToastUtil;

/**
 * 震动收发器
 */
public class ShockReceiver extends BroadcastReceiver {

    public static final String SHOCK_ACTION = "com.wxp.demo09.shock";

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent != null && SHOCK_ACTION.equals(intent.getAction())) {
            LogUtils.debug("收到震动通知，准备开始震动。");
            ToastUtil.show(context, "收到震动通知，准备开始震动！");

            //旧api写法
//            if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.S) {
//                // 从系统服务中获取震动管理器
//                Vibrator vb = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
//                // 命令震动器吱吱个若干秒，这里的500表示500毫秒
//                vb.vibrate(500);
//                return;
//            }

            //新api写法
            Vibrator vibrator;
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
                // 从系统服务中获取震动管理器
                VibratorManager vibratorManager = (VibratorManager) context.getSystemService(Context.VIBRATOR_MANAGER_SERVICE);
                vibrator = vibratorManager.getDefaultVibrator();
            } else {
                //为了支持 Android API < 31的向下兼容，VibratorManager 只在 API 级别31的版本中添加。
                vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
            }

            //重试次数：-1 代表不重试
            int repeat = -1;
            //设置震动时间
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                // 震动持续时间序列
                long[] timings = {0, 500};
                // 震动强度序列
                int[] amplitudes = {0, 100};
                VibrationEffect vibrationEffect = VibrationEffect.createWaveform(timings, amplitudes, repeat);
                vibrator.vibrate(vibrationEffect);
            } else {
                //Android 应用程式指数的向下兼容 < 26
                vibrator.vibrate(500);
            }
        }
    }


}